Testing a software system is conducted by identifying a plurality of test cases and then executing these test cases. A test case may define a single complete set of inputs to the system and the expected response of the system to this input. Sometimes a test case involves a back and forth dialog between the system under test and one or more external agents, but this test case may also be defined by a set of inputs and outputs by further identifying the sequence of the input and output exchanges. The back and forth dialog between communicating systems may be referred to as handshaking between the systems. The messages exchanged by the systems may be referred to as handshakes.
For analysis purposes it may be useful to model complex business transactions at different levels of abstraction. For example, a business transaction may be identified at the highest level by a short three to twenty word phrase. At the next level of detail this single transaction may be decomposed into two or more constituent operations. At the next level of detail each of these constituent operations may be decomposed into still other operations. The results of such an analysis may be captured by a business use case comprising the short phrase identifying the business transaction, by a scenario identifying a sequence of intermediate operations which taken together accomplish the business transaction, and by several sequence diagrams, each sequence diagram representing the operations comprising a single intermediate operation. These artifacts of analysis may provide a useful starting point for software design and implementation.
As software has become more complicated, increasingly powerful software development tools have been created. Some software tools are directed to supporting a specific software development process or methodology. Such tools may provide support across several phases of a software development process. For example, they may provide support for the analysis phase, the design phase, the implementation phase, and the maintenance phase. These tools may strongly influence individual software developers to adopt and adhere to a uniform software development process.